00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 if ( !defined("PATH_TO_ROOT") ) {
00025 define( "PATH_TO_ROOT", "../../" );
00026 }
00027
00034 require_once (PATH_TO_ROOT."common/classes/class.modulautomation.inc.php");
00035 class RessourceAutomation extends ModulAutomation {
00041 function RessourceAutomation() {
00042 parent::ModulAutomation();
00043 $this->info = "Ressourcen";
00044 }
00053 function deleteUser($userID) {
00054 global $db, $EZSQL_ERROR;
00055 $errorCount = count($EZSQL_ERROR);
00056 $db->query("DELETE FROM filelog WHERE userID=$userID");
00057 if (count($EZSQL_ERROR) > $errorCount) {
00058 $this->error("Fehler beim Löschen der Log-Einträge:\n".print_r($EZSQL_ERROR[$errorCount], true));
00059 } else {
00060 $this->writeToLogfile($db->rows_affected." Log-Einträge gelöscht.");
00061 }
00062 $errorCount = count($EZSQL_ERROR);
00063 $db->query("DELETE FROM filetreelayout WHERE userID=$userID");
00064 if (count($EZSQL_ERROR) > $errorCount) {
00065 $this->error("Fehler beim Löschen der Anzeigeeinstellungen für Ordner:\n".print_r($EZSQL_ERROR[$errorCount], true));
00066 } else {
00067 $this->writeToLogfile($db->rows_affected." Anzeigeeinstellung(en) für Ordner gelöscht.");
00068 }
00069 $errorCount = count($EZSQL_ERROR);
00070 $db->query("DELETE FROM filevisible WHERE userID=$userID");
00071 if (count($EZSQL_ERROR) > $errorCount) {
00072 $this->error("Fehler beim Löschen der speziellen Sichtbarkeitseinstellungen:\n".print_r($EZSQL_ERROR[$errorCount], true));
00073 } else {
00074 $this->writeToLogfile($db->rows_affected." spezielle Sichtbarkeitseinstellung(en) gelöscht.");
00075 }
00076 $errorCount = count($EZSQL_ERROR);
00077 $db->query("UPDATE filelist SET userID=3 WHERE userID=$userID");
00078 if (count($EZSQL_ERROR) > $errorCount) {
00079 $this->error("Fehler beim Aktualisieren des Besitzers der Ressourcen:\n".print_r($EZSQL_ERROR[$errorCount], true));
00080 } else {
00081 $this->writeToLogfile($db->rows_affected." Besitzer der Ressource(n) aktualisiert.");
00082 }
00083 if (!empty($this->errorString)) return false;
00084 return true;
00085 }
00094 function deleteUserFromCourse($userID, $courseID) {
00095 global $db, $EZSQL_ERROR;
00096 $fileIDs = $db->get_col("SELECT fileID FROM filelist WHERE courseID=$courseID");
00097 if (is_array($fileIDs)) {
00098 $errorCount = count($EZSQL_ERROR);
00099 $db->query("DELETE FROM filelog WHERE userID=$userID AND fileID IN (".implode(",", $fileIDs) .")");
00100 if (count($EZSQL_ERROR) > $errorCount) {
00101 $this->error("Fehler beim Löschen der Log-Einträge:\n".print_r($EZSQL_ERROR[$errorCount], true));
00102 } else {
00103 $this->writeToLogfile($db->rows_affected." Log-Einträge gelöscht.");
00104 }
00105 $errorCount = count($EZSQL_ERROR);
00106 $db->query("DELETE FROM filetreelayout WHERE userID=$userID AND folderID IN (".implode(",", $fileIDs) .")");
00107 if (count($EZSQL_ERROR) > $errorCount) {
00108 $this->error("Fehler beim Löschen der Anzeigeeinstellungen für Ordner:\n".print_r($EZSQL_ERROR[$errorCount], true));
00109 } else {
00110 $this->writeToLogfile($db->rows_affected." Anzeigeeinstellung(en) für Ordner gelöscht.");
00111 }
00112 $errorCount = count($EZSQL_ERROR);
00113 $db->query("DELETE FROM filevisible WHERE userID=$userID AND fileID IN (".implode(",", $fileIDs) .")");
00114 if (count($EZSQL_ERROR) > $errorCount) {
00115 $this->error("Fehler beim Löschen der speziellen Sichtbarkeitseinstellungen:\n".print_r($EZSQL_ERROR[$errorCount], true));
00116 } else {
00117 $this->writeToLogfile($db->rows_affected." spezielle Sichtbarkeitseinstellung(en) gelöscht.");
00118 }
00119 }
00120 if (!empty($this->errorString)) return false;
00121 return true;
00122 }
00130 function newCourse($courseID) {
00131 global $db, $dozentID, $EZSQL_ERROR, $settings;
00132 $folders = $settings["default_folders"];
00133 if (!empty($folders)) {
00134 $errorCount = count($EZSQL_ERROR);
00135 foreach($folders as $folder) {
00136 $folder = str_replace("\\,", $hash = md5(microtime()), $folder);
00137 $folder = explode(",", $folder);
00138 $folderName = str_replace($hash, ",", trim($folder[0]));
00139 if (isset($folder[1])) {
00140 $folderDesc = str_replace($hash, ",", trim($folder[1]));
00141 } else {
00142 $folderDesc = "";
00143 }
00144 $db->query("INSERT INTO filelist (link, parent_object, name, userID, create_time, courseID, type, visible_type, student_write) "."VALUES ('$folderName', 0, '$folderDesc', '$dozentID', '".time() ."', '$courseID', 'folder', 1, 1)");
00145 }
00146 if (count($EZSQL_ERROR) > $errorCount) {
00147 $this->error("Fehler beim Erstellen der Default-Ordner:\n".print_r($EZSQL_ERROR[$errorCount], true));
00148 } else {
00149 $this->writeToLogfile("Default-Ordner erstellt.");
00150 }
00151 }
00152 if (!empty($this->errorString)) return false;
00153 return true;
00154 }
00163 function deleteCourse($courseID) {
00164 global $db, $settings, $EZSQL_ERROR;
00165 $filelinks = $db->get_col("SELECT link FROM filelist WHERE type='file' AND courseID=$courseID");
00166 $fileIDs = $db->get_col("SELECT fileID FROM filelist WHERE courseID=$courseID");
00167 $dir = PATH_TO_ROOT.$settings["upload_path"]."filemanager/courseID/$courseID/";
00168 $erfolg = true;
00169 if (count($filelinks)) {
00170 $filesDeleted = 0;
00171 foreach($filelinks as $file) {
00172 if (file_exists($dir.$file)) {
00173 if (!unlink($dir.$file)) {
00174 $erfolg = false;
00175 $this->error("Fehler beim Löschen der Datei $dir$file.");
00176 } else {
00177 $filesDeleted++;
00178 }
00179 } else {
00180 $erfolg = false;
00181 $this->error("Datei $dir$file nicht gefunden.");
00182 }
00183 }
00184 $this->writeToLogfile($filesDeleted." Datei(en) gelöscht.");
00185 if (file_exists($dir)) rmdir($dir);
00186 }
00187 $errorCount = count($EZSQL_ERROR);
00188 $db->query("DELETE FROM filelist WHERE courseID=$courseID");
00189 if (count($EZSQL_ERROR) > $errorCount) {
00190 $this->error("Fehler beim Löschen der Einträge aus der Datenbank:\n".print_r($EZSQL_ERROR[$errorCount], true));
00191 $erfolg = false;
00192 } else {
00193 $this->writeToLogfile($db->rows_affected." Einträge aus der Datenbank gelöscht.");
00194 }
00195 if (is_array($fileIDs)) {
00196 $errorCount = count($EZSQL_ERROR);
00197 $db->query("DELETE FROM filelog WHERE fileID IN (".implode(",", $fileIDs) .")");
00198 if (count($EZSQL_ERROR) > $errorCount) {
00199 $this->error("Fehler beim Löschen der Log-Einträge:\n".print_r($EZSQL_ERROR[$errorCount], true));
00200 $erfolg = false;
00201 } else {
00202 $this->writeToLogfile($db->rows_affected." Log-Einträge gelöscht.");
00203 }
00204 $errorCount = count($EZSQL_ERROR);
00205 $db->query("DELETE FROM filetreelayout WHERE folderID IN (".implode(",", $fileIDs) .")");
00206 if (count($EZSQL_ERROR) > $errorCount) {
00207 $this->error("Fehler beim Löschen der Anzeigeeinstellungen für Ordner:\n".print_r($EZSQL_ERROR[$errorCount], true));
00208 $erfolg = false;
00209 } else {
00210 $this->writeToLogfile($db->rows_affected." Anzeigeeinstellung(en) für Ordner gelöscht.");
00211 }
00212 $errorCount = count($EZSQL_ERROR);
00213 $db->query("DELETE FROM filevisible WHERE fileID IN (".implode(",", $fileIDs) .")");
00214 if (count($EZSQL_ERROR) > $errorCount) {
00215 $this->error("Fehler beim Löschen der speziellen Sichtbarkeitseinstellungen:\n".print_r($EZSQL_ERROR[$errorCount], true));
00216 $erfolg = false;
00217 } else {
00218 $this->writeToLogfile($db->rows_affected." spezielle Sichtbarkeitseinstellung(en) gelöscht.");
00219 }
00220 }
00221 return $erfolg;
00222 }
00223 }
00224 ?>